package com.jxwifi.cloud.quickclean.utils;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;

import com.idroid.bean.RouteBean;
import com.idroid.widget.Toaster;
import com.jxwifi.cloud.quickclean.bean.ParameterBean;
import com.lidroid.util.OtherUtils;

import org.json.JSONObject;

import java.util.Iterator;

/**
 * 界面跳转工具类
 * Created by oushuhua
 */
public class RouteManager {
    /**
     * 解析JSON配置参数并跳转到相应ACTIVITY
     *
     * @param paramsJson 该参数包含所有参数内容和class必须全路径 如：com.kuparts.service.WelcomeActivity
     */
    public static void startActivity(Context ctx, String pageUrl, final String paramsJson) {
        try {
            Bundle bundle = new Bundle();
            if (!TextUtils.isEmpty(paramsJson)) {
                JSONObject tmp = new JSONObject(paramsJson);
            /*if (tmp.getBoolean("isNeedLogin")){ //有些跳转的页面需要登录
                new android.os.Handler().postDelayed(new Runnable() {
                    public void run() {
                        EventBus.getDefault().post(paramsJson, "e-isNeedLogin");
                    }
                }, 1000);
            }else{*/

                if (tmp != null) {
                    Iterator<?> it = tmp.keys();
                    while (it.hasNext()) { //遍历JSONObject
                        String key = it.next().toString();
                        String value = tmp.getString(key);
                        bundle.putString(key.toLowerCase(), value);
                    }
                }
            }
               /* if(tmp.has("property") && !TextUtils.isEmpty(tmp.getString("property"))) {
                    JSONObject routeObject = tmp.getJSONObject("property");
                    Iterator<?> it = routeObject.keys();
                    while (it.hasNext()) { //遍历JSONObject
                        String key = it.next().toString();
                        String value = routeObject.getString(key);
                        bundle.putString(key.toLowerCase(), value);
                    }
                }*/
            jumpActivity(ctx, pageUrl, bundle);
            // }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void startActivity(Context ctx, String pageUrl, ParameterBean mBeans) {
        try {
            Bundle bundle = new Bundle();
            if (mBeans.getAndroidParaments()!=null) {
                //JSONObject tmp = new JSONObject(paramsJson);

                for (int i = 0; i < mBeans.getAndroidParaments().size(); i++) {
                    String key = mBeans.getAndroidParaments().get(i).getKey();
                    String value = mBeans.getAndroidParaments().get(i).getValue();
                    bundle.putString(key.toLowerCase(), value);
                }
            }
            jumpActivity(ctx, pageUrl, bundle);
            // }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 解析实体类配置参数并跳转到相应ACTIVITY
     *
     * @param clazzName class必须全路径 如：com.kuparts.service.WelcomeActivity
     * @param bean      参数内容
     */
    public static void startActivity(Context ctx, String clazzName, RouteBean bean) {
        bean.setClazz(clazzName);
        startActivity(ctx, bean);
    }

    /**
     * 解析实体类配置参数并跳转到相应ACTIVITY
     *
     * @param bean 实体类中包含目标class全路径和参数内容 如：com.kuparts.service.WelcomeActivity
     */
    public static void startActivity(Context ctx, RouteBean bean) {
        if (TextUtils.isEmpty(bean.getClazz())) {
            Toaster.show(ctx, "配置文件错误，不能启动页面");
            return;
        }
        Bundle bundle = new Bundle();
        for (RouteBean.RouteParamsBean paramsBean : bean.getParams()) {
            bundle.putString(paramsBean.getKey(), paramsBean.getValue());
        }
        jumpActivity(ctx, bean.getClazz(), bundle);
    }

    /**
     * 真正的跳转逻辑
     *
     * @param clazzName class必须全路径 如：com.xxx.xxx.WelcomeActivity
     * @param bundle    bundle参数数据
     */
    public static void jumpActivity(Context ctx, String clazzName, Bundle bundle) {
        if (!OtherUtils.isNetworkAvailable(ctx)) {
            Toaster.show(ctx, "网络连接异常，请检查您的网络");
            return;
        }
        try {
            Class onwClass = Class.forName(clazzName);
            Object activity = onwClass.newInstance();
            Intent intent = new Intent();
            intent.setClass(ctx, activity.getClass());
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if (bundle != null) {
                intent.putExtras(bundle);
            }
            ctx.startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
//            Toaster.show(ctx, "配置文件错误，不能启动页面");
        }
    }
}
